#ifndef LOGIC_EDIT_H
#define LOGIC_EDIT_H

#include <iostream>
#include <string>
#include <vector>
#include <sstream>

#include "Data.h"
#include "Task.h"
#include "Writer.h"
#include "LogicBase.h"

#include <boost\date_time.hpp>

using namespace std;
using namespace boost::posix_time;
using namespace boost::gregorian;

class LogicEdit : public LogicBase {
public:
	static LogicEdit& getInstance();
	LogicEdit() {};

	Display editTaskByName( string taskName, int index );
	Display editTaskByStartTime( time_duration startTime, int index );
	Display editTaskByEndTime( time_duration endTime, int index );
	Display editTaskByStartDateTime( ptime startDate, int index );
	Display editTaskByEndDateTime( ptime endDate, int index );

private:
	static LogicEdit* _logicEdit;

	Task _task;

	static const string EDIT_SUCCESS_MESSAGE;

	static const string EDIT_RENAME;
	static const string EDIT_START_TIME;
	static const string EDIT_END_TIME;
	static const string EDIT_START_DATE;
	static const string EDIT_END_DATE;

	static const string FROM_CONNECTOR;
	static const string TO_CONNECTOR;

	static const string EDIT_ERROR_MESSAGE;

	static const string NO_CHANGES_ERROR_MESSAGE;
};
#endif